Merge.
authoradsharma@los-vmm.sc.intel.com <adsharma@los-vmm.sc.intel.com>
Mon, 22 Aug 2005 18:00:37 +0000 (11:00 -0700)
committeradsharma@los-vmm.sc.intel.com <adsharma@los-vmm.sc.intel.com>
Mon, 22 Aug 2005 18:00:37 +0000 (11:00 -0700)
1  2 
tools/firmware/vmxassist/vm86.c

index e3fcaa52762b0b4ee41b6fe2ea4248a89b42be40,e3fcaa52762b0b4ee41b6fe2ea4248a89b42be40..03c44bb0346bb7c3355b2b6ca7df278bdee98dd2
@@@ -38,7 -38,7 +38,7 @@@ unsigned prev_eip = 0
  enum vm86_mode mode;
  
  #ifdef DEBUG
--int traceset = 0;
++int traceset = 0xff;
  
  char *states[] = {
        "<VM86_REAL>",
@@@ -446,6 -446,6 +446,8 @@@ movcr(struct regs *regs, unsigned prefi
  #endif
                        if (getreg(regs, modrm) & CR0_PE)
                                set_mode(regs, VM86_REAL_TO_PROTECTED);
++                        else
++                              set_mode(regs, VM86_REAL);
  
                        break;
                case 3:
@@@ -603,7 -603,7 +605,9 @@@ set_mode(struct regs *regs, enum vm86_m
  {
        switch (newmode) {
        case VM86_REAL:
--              if (mode == VM86_PROTECTED_TO_REAL) {
++              if ((mode == VM86_PROTECTED_TO_REAL) ||
++                    (mode == VM86_REAL_TO_PROTECTED)) {
++                      regs->eflags &= ~EFLAGS_TF;
                        real_mode(regs);
                        break;
                } else if (mode == VM86_REAL) {